<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>05-伪数组</title>
</head>
<body>
    <script>
        /* 
      伪数组 (arrayLike/类数组)
         是一种按照索引存储数据且具有 length 属性的对象。
         因为是对象，所以不能调用数组的方法，比如 forEach()、push() 等。

      类数组对象(伪数组)满足一下条件：
        1. 对象必须有属性，并指定数组的长度，否则转化后就是空数组
        2. 数组对象的属性必须是数值或数值型字符串，并且从0，1，2，3，

      类(伪)数组对象，转化为数组  Array.from(obj) 
        
        */

        function sum(){
            console.log(typeof arguments);  // object
            console.log(arguments);
            // arguments.push('张飞');

            let  temp = Array.from(arguments);
            temp.push('张飞');
            console.log(temp);
        }
        sum (1,2,3,4,5);
        //  结果：[1, 2, 3, 4, 5, '张飞']

        let obj = {
            0:'剑圣',
            1: true,
            2: 25,
            3:'船长',
            length:4
        };

        let result = Array.from(obj);
        console.log(obj);  //{0: '剑圣', 1: true, 2: 25, 3: '船长', length: 4}
        result.push('张飞');
        console.log(result);  //['剑圣', true, 25, '船长', '张飞']
    </script>
</body>
</html>